Power computer users and video game players alike demand a computer system that can support a presentation of multimedia data, including graphic, audio and imaging information. The popularity of multimedia presentations has encouraged the development of a variety of multimedia data formats, such as compressed video (Movie Picture Experts Group (MPEG)), uncompressed video (Yuv or RGB formats), compressed audio, and uncompressed audio. Early multimedia systems were compatible with a limited set of data formats, and typically operated in a uniform manner to play a video and/or audio stream. For example, only those video files having a particular data format compatible with multimedia systems could be read and rendered by these early computer systems.
Later multimedia systems, such as Microsoft's "Video For Windows" software program, used replaceable sections within a rigid format to handle more than one type of multimedia data format. The replaceable sections represented functional components for processing multimedia streams. The functional components typically included a file reader, a data stream splitter to split video and audio data streams, a decoder for decoding each data stream, and a renderer for displaying the video stream and presenting or "sounding" the audio stream. The default file reader could be replaced with a different one to support the reading of a different file format, such as Audio Video Interleaved (AVI) or Apple's QuickTime. Likewise, the decoder was replaceable to allow a different encoding technique, such as Intel Corporation's Indeo encoding scheme or Run-time Length Encoding (RLE), and the renderer could be replaced to vary the presentation of the video or audio streams. By replacing a section with another section compatible with a different data format, one could use a multimedia system with a wide variety of data formats.
Although the sections of these multimedia systems were replaceable, the format for processing multimedia data was fixed, i.e., only certain processing functions were supported by these sections, and the ordering of these functions sections was fixed. For example, a data stream splitter must follow a file reader, a decoder must be placed prior to the renderer, and so forth. It was difficult to disable or bypass one or more of the ordered functions of this structured system to perform complex multimedia tasks. This rigid format prevented the simple combination of two files, each containing a video stream, to produce a "merged" video effect. Thus, there is a need for a flexible multimedia system that can handle a wide variety of data formats and perform complex processing tasks.
The present invention addresses these needs by automatically combining software components, called "filters", into a graph comprising a chain or chains of filters. The graph is typically constructed by connecting the output of one filter to the input of the next filter to create a data system, whereby resulting data streams can be split or merged. By connecting filters together via a graph mechanism, it is possible to perform complex operations more easily than prior structured multimedia architectures. The range of processing tasks which can be easily performed by the filters of a graph constructed in accordance with the present invention is much greater than tasks performed by a multimedia architecture having a rigid format, even allowing for the use of replaceable sections.